package Z006ClassAndObject.CO006ChuanCan;

// 基本类型传参
public class Hero {
    String name ;
    float hp ;
    float armor ;
    int moveSpeeed ;

    public Hero(){}

    public Hero(String s) {
    }

    public void huixue(float xp){
        hp = hp + xp;
        xp = 0;
    }
    public Hero (String name,float hp){
        this.name = name;
        this.hp = hp;
    }

    public static void main(String[] args) {
        Hero teemo = new Hero("提莫",383);
        int xueping = 100;

        teemo.huixue(xueping);
        System.out.println(xueping);
    }

}

// 类，类型传参
class Hero1{
    String name ;
    float hp ;
    float armor ;
    int moveSpeeed ;

    public Hero1(){}
    public Hero1(String name,int damage){
        this.name = name;
        this.hp = hp;
    }

    public void attack(Hero1 hero ,int damage){
        hero.hp = hero.hp - damage;
    }

    public static void main(String[] args) {
        Hero1 teemo = new Hero1("提莫",383);
        Hero1 garen = new Hero1("盖伦",616);
        garen.attack(teemo,100);
        System.out.println(teemo.hp);
    }
}

/**
 * " = " 解释
 * 如果一个变量是基本类型
 * 比如 int hp = 50;
 * 我们就直接管hp叫变量
 * =表示赋值的意思。
 * 如果一个变量是类类型
 * 比如 Hero h = new Hero();
 * 我们就管h叫做引用。
 * =不再是赋值的意思
 * =表示指向的意思
 * 比如 Hero h = new Hero();
 * 这句话的意思是
 * 引用h，指向一个Hero对象
 */

/**
 * 在方法中，使参数引用指向一个新的对象
 * 外面的引用是指向原来的对象？还是新的对象？
 *
 * public class Hero {
 *
 *     String name; //姓名
 *
 *     float hp; //血量
 *
 *     float armor; //护甲
 *
 *     int moveSpeed; //移动速度
 *
 *     public Hero(){
 *
 *     }
 *
 *     public Hero(String name,float hp){
 *     	this.name = name;
 *         this.hp = hp;
 *     }
 *
 *     //复活
 *     public void revive(Hero h){
 *     	h = new Hero("提莫",383);
 *     }
 *
 *     public static void main(String[] args) {
 *         Hero teemo =  new Hero("提莫",383);
 *
 *         //受到400伤害，挂了
 *         teemo.hp = teemo.hp - 400;
 *
 *         teemo.revive(teemo);
 *
 *         //问题： System.out.println(teemo.hp); 输出多少？ 怎么理解？
 *
 *     }
 *
 * }
 */